package com.zyf.chapter02.behavior.visitor.factory;

import java.util.ArrayList;
import java.util.List;

public class ToolApplication {
    public static void main(String[] args) {
        ArrayList<ResourceFile> resourceFiles = new ArrayList();
        for (ResourceFile resourceFile : resourceFiles) {
            // 这里之所以可以取代双分派的重载语法，是因为 ResourceFile 开放了文件类型
            Extractor extractor = ExtractorFactory.getExtractor(resourceFile.getType());
            extractor.extract2txt(resourceFile);
        }
    }

    private static List<ResourceFile> listAllResourceFiles(String resourceDirectory) {
        ArrayList<ResourceFile> resourceFiles = new ArrayList<>();
        // ... 根据后缀（pdf/ppt/word）由工厂方法创建不同的类对象（pdfFile/PPTFile/WordFile）
        resourceFiles.add(new PdfFile("a.pdf"));
        return resourceFiles;
    }
}
